//
//  YHCardCollectionViewFlowLayout.m
//  YunHaiManage
//
//  Created by zhangbolin on 2021/12/22.
//

#import "YHCardCollectionViewFlowLayout.h"

@interface YHCardCollectionViewFlowLayout()

@property (nonatomic, strong) NSMutableArray *attrsArray;

@end

@implementation YHCardCollectionViewFlowLayout

- (void)prepareLayout{
    [super prepareLayout];
    [self.attrsArray removeAllObjects];
    // 不是流水布局，需要自己写
    // 组数
    NSInteger section = self.collectionView.numberOfSections;
    for (int n = 0;  n < section; n++) {
        // 每组cell数
        NSInteger count = [self.collectionView numberOfItemsInSection:n];
        for (int i = 0 ; i < count; i++) {
            NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:n];
            // 获取布局信息
            UICollectionViewLayoutAttributes *attrs = [self layoutAttributesForItemAtIndexPath:indexPath];
            [self.attrsArray addObject:attrs];
        }
    }
}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath{
    // 组数
    NSInteger count = [self.collectionView numberOfItemsInSection:indexPath.section];
    // 角度
    CGFloat angle = 2 * M_PI / count * indexPath.item;
    // 原本的布局信息
    UICollectionViewLayoutAttributes *attrs = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
    // 设置宽高
    attrs.size = CGSizeMake(50, 20);
    if (count == 1) {
        attrs.center = self.collectionView.center;
    } else {
        // 设置半径
        CGFloat radius = indexPath.section * 38;
        CGFloat x = self.collectionView.frame.size.width / 2;
        CGFloat y = self.collectionView.frame.size.height / 2;
        // 设置cell的中心
        attrs.center = CGPointMake(x + radius * sin(-angle), y + radius *cos(-angle));
        CGAffineTransform transform = CGAffineTransformIdentity;
        transform = CGAffineTransformRotate(transform, angle + M_PI - M_PI_2);
        attrs.transform = transform;
    }
    return attrs;
}

- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect{
    return self.attrsArray;
}

- (CGSize)collectionViewContentSize{
    return self.collectionView.frame.size;
}

//- (CGSize)collectionViewContentSize {
//    return CGSizeMake(self.sectionInset.left + self.sectionInset.right + ([self.collectionView numberOfItemsInSection:0] * (self.itemSize.width + self.minimumLineSpacing)) - self.minimumLineSpacing, 0);
//}

- (NSMutableArray *)attrsArray {
    if (!_attrsArray) {
        _attrsArray = [NSMutableArray array];
    }
    return _attrsArray;
}

@end
